// auth.controller.ts
import {
  Controller,
  Post,
  Body,
  Req,
  Get,
  UseGuards,
  Logger,
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { AuthService } from './auth.service';

@Controller('auth')
export class AuthController {
  private readonly logger = new Logger(AuthController.name);

  constructor(private readonly authService: AuthService) {}

  // 用户登录
  @Post('login')
  async login(@Body() user: { phone: string; password: string }) {
    this.logger.log(`用户登录请求，手机号: ${user.phone}`);
    return this.authService.login(user);
  }

  // 用户注册
  @Post('register')
  async register(
    @Body() userData: { phone: string; password: string; name: string },
  ) {
    this.logger.log(`用户注册请求，手机号: ${userData.phone}`);
    return this.authService.register(userData);
  }

  // Google认证路由
  @Get('google')
  @UseGuards(AuthGuard('google'))
  async googleAuth(@Req() _req) {
    // Guard会自动重定向到Google进行认证
  }

  // Google认证回调
  @Get('google/callback')
  @UseGuards(AuthGuard('google'))
  async googleAuthRedirect(@Req() req) {
    return this.authService.googleLogin(req.user);
  }

  // Google登录API（用于移动端）
  @Post('google/login')
  async googleLogin(@Body() _body: { accessToken: string }) {
    // 这里需要实现通过访问令牌验证用户并登录的逻辑
    // 为简化起见，我们暂时返回一个示例响应
    return {
      success: false,
      message: 'Google登录功能将在后续版本中实现',
    };
  }

  // Facebook认证路由
  @Get('facebook')
  @UseGuards(AuthGuard('facebook'))
  async facebookAuth(@Req() _req) {
    // Guard会自动重定向到Facebook进行认证
  }

  // Facebook认证回调
  @Get('facebook/callback')
  @UseGuards(AuthGuard('facebook'))
  async facebookAuthRedirect(@Req() req) {
    return this.authService.facebookLogin(req.user);
  }

  // Facebook登录API（用于移动端）
  @Post('facebook/login')
  async facebookLogin(@Body() _body: { accessToken: string }) {
    // 这里需要实现通过访问令牌验证用户并登录的逻辑
    // 为简化起见，我们暂时返回一个示例响应
    return {
      success: false,
      message: 'Facebook登录功能将在后续版本中实现',
    };
  }

  // WeChat认证路由
  @Get('wechat')
  @UseGuards(AuthGuard('wechat'))
  async wechatAuth(@Req() _req) {
    // Guard会自动重定向到WeChat进行认证
  }

  // WeChat认证回调
  @Get('wechat/callback')
  @UseGuards(AuthGuard('wechat'))
  async wechatAuthRedirect(@Req() req) {
    return this.authService.wechatLogin(req.user);
  }

  // WeChat登录API（用于移动端）
  @Post('wechat/login')
  async wechatLogin(@Body() _body: { accessToken: string }) {
    // 这里需要实现通过访问令牌验证用户并登录的逻辑
    // 为简化起见，我们暂时返回一个示例响应
    return {
      success: false,
      message: 'WeChat登录功能将在后续版本中实现',
    };
  }
}